科技新知

單機模式 IP設定

平常我們自己做測試,網絡功能通常用預設的就好。但當我們的Docker Container需要存取在區域網內的其他資源,避晚IP網段相衝是必需要的事。

大部份情況下,單機Docker使用的預設IP段會是

  • 172.17.0.0/16
  • 172.18.0.0/16
  • ...

若然現在區域網中,有一段172.18.0.0/24,大家不想Docker踩到其中,可以修改設定檔,加入預設的default-address-pools,以後它就只會從指定的區段使用。

# vim /etc/docker/daemon.json
{
  "default-address-pools": [
    {
      "base": "172.17.0.0/16",
      "size": 24
    },
    {
      "base": "172.19.0.0/16",
      "size": 24
    },
    {
      "base": "172.20.0.0/16",
      "size": 24
    }
  ]
}
 

其中base,是docker可以操作的總區域,size指的是Docker要自行分段的話,每段的大小是多少,上述的例子,就代表未來可能有以下Docker 網段。

  • 172.17.0.0/24
  • 172.17.1.0/24
  • ...
  • 172.17.255.0/24
  • 172.19.0.0/24
  • 172.19.1.0/24
  • ...
  • 172.19.255.0/24
  • 172.20.0.0/24
  • 172.20.1.0/24
  • ...
  • 172.20.255.0/24

修改完設定後,重啟Docker就會生效。當然,重啟前,先刪除所有不在預設範圍的所有Container。

Swarm模式 IP設定

Swarm模式,與單機差不多,它需要在初始化Swarm就要定義,而且它不能與單機的網段有重疊。單機會預設使用Private IPv4 Class B,Swarm則是預設使用Private IPv4 Class A段,所以我們若就更改,就使用10.x.x.x吧。

docker swarm init --default-addr-pool 10.1.0.0/16 --default-addr-pool-mask-length 24
 

經上述例子初始化的 ingress 網段,將會是 10.1.0.0/24,隨後每個stack 則會是

  • 10.1.1.0/24
  • 10.1.2.0/24
  • 10.1.3.0/24

重置Swarm

跟單機的情況類似,如果已建立Swarm後才修改網段,還是要整個刪掉重來。

每個節點都要執行以下指令。

docker swarm leave --force
 

實測swarm leave這個指令也會把所有運行中的stack刪掉。

各節點重新建立swarm

# in node 1, init new swarm with new ip
docker swarm init --default-addr-pool 10.1.0.0/16 --default-addr-pool-mask-length 24
# in node 1, get new manager token
docker swarm join-token manager
# in node 2 and node 3, join node 1 with new token
docker swarm join --token XXXXX YOUR_NEW_NODE1_IP:2377
 

雙管齊下

如果大家同想要修定單機及Swarm的網段,還要留意有一個特別的網段docker_gwbridge。它雖然是Swarm的附帶產物,但它則是受單機的網段控制。也就是,如果大家有需要同時修改單機及Swarm的網段,則需要手動刪除Swarm及docker_gwbridge

在每個節點先刪掉舊有的Swarm及docker_gwbridge,並關掉docker

docker swarm leave --force
docker network rm docker_gwbridge
 

在每個節點為docker_gwbridge修改設定,然後重起docker

# vim /etc/docker/daemon.json
{
  "default-address-pools": [
    {
      "base": "172.17.0.0/16",
      "size": 24
    }
  ]
}
 

然後像前述一樣,重起Swarm。

馬交野


超音鼠大電影3
iDOL
DX - IU CONCERT : THE WINNING
IMAX with Laser 封神第二部:戰火西岐
MX4D 工作細胞
4DX  工作細胞
隔壁的房間
工作細胞
哈哈哈新年喜戲
射雕英雄傳:俠之大者
祥賭必贏
麻雀女王追男仔
臨時決鬥
封神第二部:戰火西岐
完美伴侶
IU CONCERT : THE WINNING 2025 字幕版
《七宗罪》30周年 4K IMAX 版本 限定重映
【我推的孩子】-The Final Act-
【我推的孩子】The Final Act
柏靈頓:秘魯大冒險
柏靈頓:秘魯大冒險英語版
GIDLE WORLD TOUR IDOL IN CINEMAS
IVE The 1st World Tour in Cinema
劇場版「進擊的巨人」完結篇
劇場版 「進擊的巨人」完結篇THE LAST ATTACK
劇場版 「進擊的巨人」完結篇 THE LAST ATTACK
假爸爸
劇場版 「進擊的巨人」完結篇
MX4D 超音鼠大電影3
破。鏡。慾
獅子王:木法沙
超音鼠大電影3
iDOL